# 1、使用reduce函数取出lst里的数字 --》 12349
from functools import reduce
lst=['a', '1', '2bb', '234', '', '9']
result = list(filter(lambda x:x.isdigit(), lst))
print(reduce(lambda x,y:x+y, result))

# 2、有以下列表:list1 = [7, -8, 5, 4, 0, -2, -5]
# 要求:1.正数在前，负数在后  2.正数从小到大  3.负数从大到小
list1 = [7, -8, 5, 4, 0, -2, -5]
def Jugdement(lst):
    result1 = sorted(list(filter(lambda x:x < 0, lst)), reverse=True)
    result2 = sorted(list(set(lst) - set(result1)), reverse=False)
    return result2 + result1
print(Jugdement(list1))

# 3、这是一个字符串排序，排序规则:小写<大写<奇数<偶数
s = 'asdf234GDSdsf23'
def str_sorted(str):
    for value in str:
        if value.isdigit():
            if int(value) % 2 == 0:
                return (True, True, value)
            else:
                return (True, False, value)
        else:
            if value.islower():
                return (False, False, value)
            else:
                return (False, True, value)
# print(sorted(s, key=str_sorted))
print(''.join(sorted(s, key=str_sorted)))